package org.javaboy.fmall.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.javaboy.fmall.entity.FmBase;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * (FmBase)表数据库访问层
 *
 * @author makejava
 * @since 2020-07-16 01:02:23
 */
@Mapper
@Component
public interface FmBaseMapper {

    /**
     * 通过ID查询单条数据
     *
     *
     * @return 实例对象
     */
    FmBase queryById( @Param("fromDefineId") Long fromDefineId );

    /**
     * 查询指定行数据
     *
     * @param offset 查询起始位置
     * @param limit 查询条数
     * @return 对象列表
     */
    List<FmBase> queryAllByLimit(@Param("offset") int offset, @Param("limit") int limit);


    /**
     * 通过实体作为筛选条件查询
     *
     * @param fmBase 实例对象
     * @return 对象列表
     */
    List<FmBase> getFmBaseAll(FmBase fmBase);

    /**
     * 新增数据
     *
     * @param fmBase 实例对象
     * @return 影响行数
     */
    int insert(FmBase fmBase);

    /**
     * 修改数据
     *
     * @param fmBase 实例对象
     * @return 影响行数
     */
    int update(FmBase fmBase);

    /**
     * 删除数据
     *
     * @param  fmBase 实例对象
     * @return 影响行数
     */
    int delFmBaseData(FmBase fmBase);

    int updateFmBaseData(FmBase fmBase);

    /**
     * 根据formDefineId查询到所有的数据项
     *
     * @param formDefineId
     * @return
     */
    FmBase getLatestFormByDefine(String formDefineId);

    void getBaseItemByFormId();

    /**
     * 动态删除语句
     *
     * @param colName
     * @param value
     * @param tableName
     * @return
     */
    int delFmBaseToId(@Param("colName") String colName, @Param("value") String value, @Param("tableName") String tableName);

    int insertFmTableDate(@Param("colNames") String colNames, @Param("values") String values, @Param("tableName") String tableName);

    /**
     * 根据业务主键删除对应的数据
     *
     * @param businessIdsList
     * @param tableName
     * @return
     */
    Integer deleteData(@Param("businessIdsList") List businessIdsList, @Param("tableName") String tableName);

    /**
     * 通用的增加和修改的sql
     *
     * @param execSql 拼接的sql语句
     * @return
     */
    Integer dealData(@Param("execSql") String  execSql);


}